Willkommen auch von mir wieder zu Adap.
Wegen meiner Kamera auf meinem Laptop muss jemand nach unten gucken, also bitte nicht sich irritieren, dass ich irgendwie über euch hinweg gucke.
Gut, wir sind in Woche 10.
Heutiges Thema sind Design-Patterns.
Die Wertobjekte, die wir gerade abgeschlossen haben, wenn man ehrlich sind, waren die härteste Aufgabe.
Jetzt wird es einfacher. Nichtsdestotrotz war diesen Berg zu erklimmen, hoffentlich eine spannende Geschichte für Sie alle.
Die verschiedenen, vielleicht wenn man es nicht gewöhnt ist, verwirrenden Implementierungsformen,
die ja alle gute Gründe haben, mal auszuprobieren und als Hausaufgabe abzugeben.
Wir haben nächste Woche Pause, Weihnachtspause.
Entsprechend wird es eine Unterbrechung geben und im Januar geht es dann mit Type-Objects weiter,
wobei ich in der Woche noch am Reisen bin. Das heißt, ich muss mich durch ein Video ersetzen lassen.
Wir haben noch nicht geklärt, informieren Sie, ob die Übungen trotzdem stattfinden werden.
Gut, dann zum eigentlichen Inhalt heute. Design-Patterns.
Das interessante ist, vielleicht haben Sie sich gefragt, was ist denn dieses Value-Objects, Wertobjekt-Idee eigentlich?
Wir werden heute feststellen, dass dies ein Design-Pattern ist, ein Entwurfsmuster, deutsche Übersetzung, Entwurfsmuster,
wie viele andere auch bewusst so gewählt, weil es nicht in einem klassischen Buch, das üblicherweise mit dem Begriff Entwurfsmuster verbunden wird,
nämlich dem Entwurfsmuster-Buch oder eben Design-Patterns-Buch, weil es nicht in diesem Vorkommt.
Nichtsdestotrotz sind Wertobjekte und andere ähnliche Design-Konstrukte, Entwurfskonstrukte ebenso Entwurfsmuster.
In der nächsten Vorlesung kommt ein weiteres sehr wichtiges und bekanntes Entwurfsmuster vor, Type-Object, Typ-Objekte,
die ebenfalls nicht bisher in dem einen Standardwerk zu Entwurfsmustern auftauchen. Aber dazu später mehr.
Lassen Sie mich jetzt erst einmal Entwurfsmuster motivieren.
Dazu möchte ich durch drei Entwurfsbeispiele mich durcharbeiten, sodass wir anhand dieser drei Beispiele dann die Gemeinsamkeit erkennen
und eben das tun, was man bei Entwurfsmustern macht, die Abstraktion über wiederkehrende Problemlösungen zu finden.
Erste Frage hier ist, wie würden Sie denn eine objektorientierte Verzeichnisstruktur modellieren?
Da gibt es Dateien und Verzeichnisse und jetzt würden Sie das objektorientiert nachführen für diese Dateien und Verzeichnisse.
Wie könnte das denn vielleicht aussehen?
Ich bin mir nicht sicher, ob das jetzt interaktiv aufgrund dessen, dass ich nicht im Raum bin, gut funktionieren kann.
Ich gebe dem eine gewisse Pause. Andi, Julia, Georg, ihr sagt mir dann, falls sich jemand meldet und dringend etwas sagen möchte.
Geht klar, das machen wir aber aktuell. Es ist noch keine Rückmeldung aus dem Forum da.
Gut, so könnte das aussehen, wenn man mal naiv loslegt.
Man möchte eine Verzeichnisstruktur bauen. Also fängt man üblicherweise ganz oben an, dann muss es ein Wurzelverzeichnis geben.
Okay, wenn wir ein Wurzelverzeichnis haben, so oder so brauchen wir eine Klasse. Hier die Klasse Route Directory.
Und dann kann ein Directory, mein Verzeichnis halt in dem Wurzelverzeichnis liegen.
Da sieht man hier dann die Kompositionsbeziehung zwischen Route Directory und Directory.
Und jetzt kommt schon gleich ein Trick, weil man ja realisiert, ach ja, die Verzeichnisstruktur kann beliebig tief werden.
Also statt jetzt für die zweite und dritte Ebene so etwas wie weitere Verzeichnisse einzuführen, da zweites Ebenen Verzeichnis,
drittes Ebenen Verzeichnis hat man hier eine rekursive Beziehung von Directory zu sich selbst über die Children oder die Parent Children Beziehung.
Man sieht hier ein Verzeichnis kann ein Elternobjekt zu Kindobjekten sein.
Das heißt, hier kann ein Verzeichnis weitere beinhalten. Jetzt ist es aber so, dass ein Verzeichnis ja nicht nur weitere Verzeichnisse enthält,
sondern zum Beispiel Dateien hier über die Klasse File repräsentiert naheliegend.
Und also modellieren wir schlichtweg, dass ein Directory File Objekte beinhalten kann.
Müssen wir dann auf der Route Directory für Wurzelverzeichnis nachziehen, weil ja offenkundig schon im Wurzelverzeichnistateien liegen können.
Um das Beispiel ein bisschen anspruchsvoller zu machen, haben wir auch noch symbolische Links eingeführt.
Da gibt es also eine Link Klasse ganz links und die können auch auf Verzeichnissebene liegen und die können auch auf Wurzelverzeichnissebene liegen.
Und ein Link kann halt verweisen auf alles Mögliche. Das Wurzelverzeichnis, andere Verzeichnisse und Dateien.
So könnte sich in einer ersten Nährung Ihre, Ihr Entwurf, mein Entwurf für ein eine Verzeichnisstruktur für ein objektorientiertes Entwurf für Verzeichnisse darstellen.
Ja gefällt Ihnen da? Würden Sie da was anders machen?
Ich würde einfach mal rein schwarfeln. Warum muss das Route Directory was anderes sein als das Directory? Warum ist es nicht gleich?
Genau. Was würden Sie also machen? Ich würde sagen, dass Route Directory ist auch ein Directory und dementsprechend die Klassen zusammenlegen.
Also Sie würden nicht etwa Route Directory eine Spezialform von Directory machen, sondern sagen Route Directory und Directory sind eigentlich dasselbe.
Presenters
Zugänglich über
Offener Zugang
Dauer
01:18:35 Min
Aufnahmedatum
2019-12-16
Hochgeladen am
2019-12-16 22:09:03
Sprache
de-DE